#!/usr/bin/env node
/**
 * FigmaMCPWorkflow 入口脚本
 * 在执行真正生成任务前，先进行方案文档的纠正
 */

const fs = require('fs');
const path = require('path');
const { execSync } = require('child_process');

// 命令行参数
const args = process.argv.slice(2);
if (args.length < 1) {
  console.log(`
FigmaMCPWorkflow 入口

使用方法:
  node scripts/workflow-start.js <方案文档路径> [--skip-validation]

示例:
  node scripts/workflow-start.js "Usage Trends 方案文档.md"
  node scripts/workflow-start.js "BillingDashboard 方案文档.md" --skip-validation

选项:
  --skip-validation  跳过文档验证纠正步骤

工作流程:
  1. 验证并纠正方案文档（生成 -corrected.md）
  2. 执行 FigmaMCPWorkflow Phase0-5
  `);
  process.exit(1);
}

const inputFile = args[0];
const skipValidation = args.includes('--skip-validation');
const inputPath = path.resolve(inputFile);

if (!fs.existsSync(inputPath)) {
  console.error(`错误：文件不存在 - ${inputPath}`);
  process.exit(1);
}

console.log('\n========== FigmaMCPWorkflow 开始 ==========\n');
console.log(`输入文档：${inputFile}`);

let targetDocument = inputPath;

// Step 1: 执行文档验证纠正（除非跳过）
if (!skipValidation) {
  console.log('\n[Step 1] 执行文档验证纠正...');

  try {
    // 执行验证工具
    const cmd = `node scripts/validate-and-correct-fields.js "${inputPath}"`;
    console.log(`执行命令：${cmd}`);
    execSync(cmd, { stdio: 'inherit' });

    // 使用纠正后的文档作为真理源
    const dir = path.dirname(inputPath);
    const baseName = path.basename(inputPath, '.md');
    const correctedPath = path.join(dir, `${baseName}-corrected.md`);

    if (fs.existsSync(correctedPath)) {
      targetDocument = correctedPath;
      console.log(`✅ 文档纠正完成，使用纠正后的版本：${correctedPath}`);
    } else {
      console.log('⚠️ 未生成纠正文档，使用原始文档');
    }
  } catch (error) {
    console.error('❌ 文档验证纠正失败:', error.message);
    console.log('继续使用原始文档...');
  }
} else {
  console.log('\n[Step 1] 跳过文档验证纠正');
}

// Step 2: 准备工作流执行
console.log('\n[Step 2] 准备执行 FigmaMCPWorkflow...');

// 提取组件信息
const content = fs.readFileSync(targetDocument, 'utf8');
const componentCodeMatch = content.match(/[*#]*\s*组件\s*Code\s*[*#]*[：:]\s*(\w+)/);
const componentNameMatch = content.match(/[*#]*\s*组件\s*Name\s*[*#]*[：:]\s*([\w\s]+)/);

if (!componentCodeMatch) {
  console.error('❌ 无法从文档中提取组件Code');
  process.exit(1);
}

const componentCode = componentCodeMatch[1].trim();
const componentName = componentNameMatch ? componentNameMatch[1].trim() : componentCode;

console.log(`组件Code: ${componentCode}`);
console.log(`组件Name: ${componentName}`);

// 创建工作目录
const workDir = path.resolve(componentCode);
if (!fs.existsSync(workDir)) {
  fs.mkdirSync(workDir, { recursive: true });
  console.log(`创建工作目录：${workDir}`);
}

// 创建执行上下文
const executionContext = {
  componentCode,
  componentName,
  sourceDocument: targetDocument,
  workDirectory: workDir,
  timestamp: new Date().toISOString(),
  workflow: 'FigmaMCPWorkflow',
  phases: ['Phase0', 'Phase1', 'Phase2', 'Phase3', 'Phase4', 'Phase5']
};

const contextPath = path.join(workDir, 'execution-context.json');
fs.writeFileSync(contextPath, JSON.stringify(executionContext, null, 2));
console.log(`创建执行上下文：${contextPath}`);

// Step 3: 输出下一步指引
console.log('\n========== 工作流准备完成 ==========\n');

console.log('📋 执行上下文已准备：');
console.log(`   - 组件代码: ${componentCode}`);
console.log(`   - 方案文档: ${targetDocument}`);
console.log(`   - 工作目录: ${workDir}`);

console.log('\n📌 下一步操作：');
console.log('1. AI 读取纠正后的方案文档作为真理源');
console.log('2. 按 FigmaMCPWorkflow Phase0-5 顺序执行');
console.log('3. 使用工作目录存储各Phase产物');

console.log('\n💡 提示：');
console.log('- 纠正后的文档是字段定义的真理源，无需额外推理');
console.log('- 所有公共字段已按规范补充完整');
console.log('- 字段类型已纠正为PB系统标准格式');

// 输出Phase0提示
console.log('\n========== Phase0 提示 ==========');
console.log(`
Phase0 任务：
1. 读取方案文档：${targetDocument}
2. 提取所有字段定义（Content + Style）
3. 创建 ${workDir}/phase0/requirement-fields.json
4. 准备Figma设计链接和执行计划

注意事项：
- 使用纠正后的文档作为唯一真理源
- 字段类型已标准化，直接使用
- 公共字段已完整，无需补充
`);

console.log('\n✅ 工作流入口执行完成');
